Asynchronous Web Service ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগের একটি বিশেষ পদ্ধতি যেখানে ক্লায়েন্ট সার্ভিস কল করার পর অপেক্ষা না করে অন্যান্য কাজ করতে পারে। ওয়েব সার্ভিসের কাজ সম্পন্ন হলে, সার্ভার ক্লায়েন্টকে একটি রেসপন্স পাঠায়। Apache CXF এই ধরনের অ্যাসিঙ্ক্রোনাস ওয়েব সার্ভিস কনফিগার এবং ইমপ্লিমেন্ট করার জন্য একটি শক্তিশালী ফ্রেমওয়ার্ক প্রদান করে।
এখানে আমরা একটি সিম্পল অ্যাসিঙ্ক্রোনাস ওয়েব সার্ভিসের উদাহরণ দেখব, যেখানে সার্ভিসটি একটি অ্যাসিঙ্ক্রোনাস মেথড ব্যবহার করবে এবং ক্লায়েন্ট তার ফলাফল একবার পেলে সেই অনুযায়ী কাজ করবে।
এখানে একটি ওয়েব সার্ভিসের উদাহরণ দেওয়া হচ্ছে যা একটি অ্যাসিঙ্ক্রোনাস মেথড প্রক্রিয়া করবে:
import javax.jws.WebMethod;
import javax.jws.WebService;
import org.apache.cxf.async.AsyncHandler;
@WebService
public class AsyncHelloWorldService {
@WebMethod
public String sayHello(String name) {
// সাধারণ ওয়েব সার্ভিস মেথড
return "Hello, " + name;
}
@WebMethod
public void asyncSayHello(String name, AsyncHandler<String> asyncHandler) {
// অ্যাসিঙ্ক্রোনাস মেথড - কল করার পর, কলব্যাক হ্যান্ডলারকে রেসপন্স পাঠানো হবে
String response = "Hello, " + name;
asyncHandler.handleResponse(new AsyncResponse<>(response)); // এখানে AsyncResponse ব্যবহার করে ফলাফল প্রেরণ
}
}
এখানে, asyncSayHello
মেথডটি অ্যাসিঙ্ক্রোনাসভাবে কাজ করে এবং যখন কাজ সম্পন্ন হবে, তখন সেই রেসপন্সকে AsyncHandler
ব্যবহার করে ক্লায়েন্টের কাছে পাঠানো হবে।
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class HelloWorldAsyncServer {
public static void main(String[] args) {
AsyncHelloWorldService implementor = new AsyncHelloWorldService();
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(AsyncHelloWorldService.class);
factory.setAddress("http://localhost:8080/asyncHello");
factory.create();
}
}
এখানে, JaxWsServerFactoryBean
ব্যবহার করে ওয়েব সার্ভিসটি শুরু করা হয়েছে এবং অ্যাসিঙ্ক্রোনাস সাপোর্ট সহ asyncSayHello
মেথড তৈরি করা হয়েছে।
এখন, আমরা ক্লায়েন্ট সাইডে অ্যাসিঙ্ক্রোনাস কল করার উদাহরণ দেখব যেখানে AsyncResponseCallback
ব্যবহৃত হবে।
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.async.AsyncResponseCallback;
import org.apache.cxf.message.Message;
public class AsyncHelloWorldClient {
public static void main(String[] args) {
// ক্লায়েন্ট তৈরি
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(AsyncHelloWorldService.class);
factory.setAddress("http://localhost:8080/asyncHello");
AsyncHelloWorldService helloWorld = (AsyncHelloWorldService) factory.create();
// অ্যাসিঙ্ক্রোনাস কলের জন্য CallBack হ্যান্ডলার সেট করা
helloWorld.asyncSayHello("John", new AsyncResponseCallback() {
@Override
public void handleResponse(Message message) {
String response = (String) message.getContent(String.class);
System.out.println("Received Async Response: " + response); // এখানে রেসপন্স প্রিন্ট করা হবে
}
@Override
public void handleFault(Message message) {
System.out.println("Async Fault: " + message);
}
});
// অন্য কাজ করা যেতে পারে
System.out.println("Async call is in progress...");
}
}
এখানে asyncSayHello
মেথডটি অ্যাসিঙ্ক্রোনাসভাবে কল করা হচ্ছে এবং AsyncResponseCallback
ব্যবহার করে রেসপন্স বা ত্রুটি হ্যান্ডলিং করা হচ্ছে। handleResponse
মেথডটি ক্লায়েন্টের কাছে রেসপন্স পৌঁছানোর পর কল হবে, যেখানে আমরা প্রাপ্ত রেসপন্স প্রিন্ট করব। ত্রুটির ক্ষেত্রে handleFault
মেথডটি কল হবে।
asyncSayHello
মেথডটি অ্যাসিঙ্ক্রোনাসভাবে কল করে। সার্ভিসে এই মেথডটি রিসিভ হওয়ার পর কার্যক্রম শুরু হবে।AsyncHandler
ব্যবহার করে রেসপন্সটি ক্লায়েন্টকে পাঠাবে।AsyncResponseCallback
এর মাধ্যমে রেসপন্স প্রাপ্তি নিশ্চিত করবে এবং সেই অনুযায়ী কাজ করবে।অ্যাসিঙ্ক্রোনাস ওয়েব সার্ভিসের মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে দ্রুত এবং স্কেলেবল কমিউনিকেশন সম্ভব হয়। Apache CXF এই ধরনের ওয়েব সার্ভিস বাস্তবায়ন করতে অত্যন্ত কার্যকরী ফিচার প্রদান করে। AsyncHandler
এবং AsyncResponseCallback
ব্যবহার করে ওয়েব সার্ভিসের পারফরম্যান্স এবং কার্যকারিতা বৃদ্ধি করা সম্ভব।
Read more